Receive side scaling (RSS) is a feature in an operating system that allows network adapters that support RSS to direct packets of certain Transmission Control Protocol/Internet Protocol (TCP/IP) flow to be processed on a designated Central Processing Unit (CPU), thus increasing network processing power on computing platforms that have a plurality of processors. Further details of the TCP/IP protocol are described in the publication entitled “Transmission Control Protocol: DARPA Internet Program Protocol Specification,” prepared for the Defense Advanced Projects Research Agency (RFC 793, published September 1981). The RSS feature scales the received traffic across the plurality of processors in order to avoid limiting the receive bandwidth to the processing capabilities of a single processor.
In order to direct packets to the appropriate CPU, a hash function is defined that takes as an input the header information included in the flow, and outputs a hash value used to identify the CPU on which the flow should be processed by a device driver and the TCP/IP stack. The hash function is run across the connection-specific information in each incoming packet header. Based on the hash value, each packet is assigned to a certain bucket in a redirection table. There are a fixed number of buckets in the redirection table and each bucket can point to a specific processor. The contents of the redirection table are pushed down from the host stack. In response to an incoming packet being classified to a certain bucket, the incoming packet can be directed to the processor associated with that bucket.